/**   
* @Title: Crunchify.java 
* @Package: com.ifuntimes.http 
* @Description: TODO
* @author:YuHai
* @Email: YuHai if@ifuntimes.com
* @date 2017年09月05日 上午11:18:13
* @version V1.0   
*/
package com.ifuntimes.http;

import com.ifuntimes.drapi.autosdk.exception.ApiException;

/**
 * @ClassName: Crunchify
 * @Description: API接口
 * @author YuHai if@ifuntimes.com
 * @date 2017年09月05日 上午11:18:13
 * 
 */
public interface Crunchify {

	/**
	 * @Title AccountService
	 * @Description 获取username对应的账户信息 ；如果是来自MCC Token的请求，则返回target对应的账户信息。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getAccountInfo(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;

	/**
	 * @Title AccountService
	 * @Description 获取username对应的账户信息 ；如果是来自MCC Token的请求，则返回target对应的账户信息。
	 * @param parmas
	 * @return
	 */
	ReturnMsg updateAccountInfo(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;

	/**
	 * @Title CampaignService
	 * @Description 根据指定的计划id获取推广计划(id可批量) 。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getCampaign(String opUsername, String opPassword, String tgUsername, String tgPassword, String tgSubname,
			String data) throws ApiException;

	/**
	 * @Title CampaignService
	 * @Description 新增推广计划，新增时可设置计划的属性设置（包含无线推广的属性设置）。
	 *              支持一次新增多个计划，每个账户下最多支持100个计划。 无效属性不返回，没有输入值的属性不返回。
	 * @param parmas
	 * @return
	 */
	ReturnMsg addCampaign(String opUsername, String opPassword, String tgUsername, String tgPassword, String tgSubname,
			String data) throws ApiException;

	/**
	 * @Title CampaignService
	 * @Description 根据指定的计划ID更新推广计划的属性 支持批量更新推广计划的属性，每账户最多100个计划。 不更新的属性，无返回值
	 * @param parmas
	 * @return
	 */
	ReturnMsg updateCampaign(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;

	/**
	 * @Title CampaignService
	 * @Description 删除指定的计划(可批量)
	 * @param parmas
	 * @return
	 */
	ReturnMsg deleteCampaign(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;

	
	/**
	 * @Title AdgroupService
	 * @Description 根据指定的单元id获取推广单元。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getAdgroup(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;

	/**
	 * @Title AdgroupService
	 * @Description 新增推广单元(可批量)。
	 * @param parmas
	 * @return
	 */
	ReturnMsg addAdgroup(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title AdgroupService
	 * @Description 更新推广单元(可批量)。
	 * @param parmas
	 * @return
	 */
	ReturnMsg updateAdgroup(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title AdgroupService
	 * @Description 删除指定的单元(可批量)
	 * @param parmas
	 * @return
	 */
	ReturnMsg deleteAdgroup(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title KeywordService
	 * @Description 根据指定的单元id、关键词id获取关键词信息。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getWord(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title KeywordService
	 * @Description 新增关键词（可批量）。
	 * @param parmas
	 * @return
	 */
	ReturnMsg addWord(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title KeywordService
	 * @Description 更新关键词（可批量）。
	 * @param parmas
	 * @return
	 */
	ReturnMsg updateWord(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title KeywordService
	 * @Description 删除指定的关键词（可批量）
	 * @param parmas
	 * @return
	 */
	ReturnMsg deleteWord(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title CreativeService
	 * @Description 根据指定的单元id、创意id获取创意信息。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getCreative(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title CreativeService
	 * @Description 新增创意（可批量）。
	 * @param parmas
	 * @return
	 */
	ReturnMsg addCreative(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title CreativeService
	 * @Description 更新创意（可批量）。
	 * @param parmas
	 * @return
	 */
	ReturnMsg updateCreative(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title CreativeService
	 * @Description  删除指定的创意(可批量) 。
	 * @param parmas
	 * @return
	 */
	ReturnMsg deleteCreative(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title NewCreativeService
	 * @Description  根据指定的id类型和id信息，获取推广子链。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getSublink(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	/**
	 * @Title NewCreativeService
	 * @Description  新增计算机推广子链，可批量添加。
	 * @param parmas
	 * @return
	 */
	ReturnMsg addSublink(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	/**
	 * @Title NewCreativeService
	 * @Description  更新计算机推广子链，可批量更新。
	 * @param parmas
	 * @return
	 */
	ReturnMsg updateSublink(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	/**
	 * @Title NewCreativeService
	 * @Description  删除指定的附加创意。
	 * @param parmas
	 * @return
	 */
	ReturnMsg deleteSublinkRequest(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title NewCreativeService
	 * @Description  根据指定的单元ID或电话ID获取电话信息。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getPhone(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title NewCreativeService
	 * @Description  新增电话对象数组；不超过5000
	 * @param parmas
	 * @return
	 */
	ReturnMsg addPhone(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	/**
	 * @Title NewCreativeService
	 * @Description  更新网页回呼对象数组，不超过5000	
	 * @param parmas
	 * @return
	 */
	ReturnMsg updateEcall(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	/**
	 * @Title NewCreativeService
	 * @Description  网页回呼分组数组	
	 * @param parmas
	 * @return
	 */
	ReturnMsg getEcallGroup(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title DynamicCreativeService
	 * @Description  批量不超过10000，建议分批多次请求。
	 * 				添加动态创意描述，可在附属于计划层级、单元层级。
	 * @param parmas
	 * @return
	 */
	ReturnMsg addDynCreative(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	/**
	 * @Title DynamicCreativeService
	 * @Description  批量不超过10000，建议分批多次请求。	
	 * @param parmas
	 * @return
	 */
	ReturnMsg deleteDynCreative(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	/**
	 * @Title DynamicCreativeService
	 * @Description  批量不超过10000，建议分批多次请求。	
	 * @param parmas
	 * @return
	 */
	ReturnMsg updateDynCreative(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	/**
	 * @Title DynamicCreativeService
	 * @Description  带查询属性集合	
	 * @param parmas
	 * @return
	 */
	ReturnMsg getDynCreative(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	/**
	 * @Title DynamicCreativeService
	 * @Description  根据指定推广计划id获取推广计划下所有排除对象（id可批量）。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getExclusionTypeByCampaignId(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	/**
	 * @Title DynamicCreativeService
	 * @Description  添加动态创意排除对象，支持批量，每个计划最多绑定排除URL20个，
	 * 				绑定排除词50个，每次最多操作100个计划。（重复的排除对象不会被添加。添加以计划为单位，
	 *				 每个计划下排除对象要么全添加成功，要么全添加失败。）
	 * @param parmas
	 * @return
	 */
	ReturnMsg addExclusionType(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	/**
	 * @Title DynamicCreativeService
	 * @Description  按计划id及动态创意排除对象id删除动态创意排除对象。
	 * @param parmas
	 * @return
	 */
	ReturnMsg delExclusionType(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title ReportService
	 * @Description  实时报告-包含多类报告。
	 * 				  请求账户，计划，单元，关键词keywordid，关键词wordid，创意，地域等7种绩效数据报告，
	 * 				 请求时提供所需数据报告的条件，返回本次请求数据。
	 * 				 从属service: ReportService
	 * @param parmas
	 * @return
	 */
	ReturnMsg getRealTimeData(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	

	/**
	 * @Title ReportService
	 * @Description  搜索词报告
	 * 				 请求搜索词报告的绩效数据报告，请求时提供所需数据报告的条件，返回本次请求数据
	 * 				 从属service: ReportService
	 * @param parmas
	 * @return
	 */
	ReturnMsg getRealTimeQueryData(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title ReportService
	 * @Description  异步报告请求绩效数据报告，
	 * 				  请求时提供所需数据报告的条件，返回本次请求的reportId。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getProfessionalReportId(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title ReportService
	 * @Description  异步报告请求绩效数据报告，
	 * 				  查询报告当前的生成状态。请求中提供报告ID，返回中带有当前报告ID的处理状态。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getReportState(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	/**
	 * @Title ReportService
	 * @Description  异步报告请求绩效数据报告，
	 * 				  获取报告下载地址。当报告成功生成后，使用reportId请求，返回相应的报告下载地址。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getReportFileUrl(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	
	/**
	 * @Title BulkJobService 
	 * 使用此服务可以将对您的大批量请求安排为异步批量请求，
	 * 并可以获取您近期所执行请求的状态、结果等信息。
	 * @Description  获取指定账户下的完整数据（计划、单元、关键词、创意、蹊径、无线蹊径、电话、商桥、动态创意），
	 * 或者获取指定计划下的完整数据（计划、单元、关键词、创意、蹊径、无线蹊径、电话、商桥、动态创意）。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getAllObjects(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title BulkJobService 
	 * 使用此服务可以将对您的大批量请求安排为异步批量请求，
	 * 并可以获取您近期所执行请求的状态、结果等信息。
	 * @Description 通过该接口获取完整账户下，或者指定计划ID下的有变化的物料信息。
	 * 该接口为异步接口，返回请求的结果文件ID。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getAllChangedObjects(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title BulkJobService 
	 * 使用此服务可以将对您的大批量请求安排为异步批量请求，
	 * 并可以获取您近期所执行请求的状态、结果等信息。
	 * @Description 在调用getAllObejects、getAllChangedObjects接口后使用，以查询请求的文件是否已生成。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getFileStatus(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	/**
	 * @Title BulkJobService 
	 * 使用此服务可以将对您的大批量请求安排为异步批量请求，
	 * 并可以获取您近期所执行请求的状态、结果等信息。
	 * @Description 返回请求的文件下载地址。使用接口：getAllObjects，getAllChangedObjects按照请求的下载文件顺序返回。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getFilePath(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	
	/**
	 * @Title BulkJobService 
	 * 使用此服务可以将对您的大批量请求安排为异步批量请求，
	 * 并可以获取您近期所执行请求的状态、结果等信息。
	 * @Description 取消一个下载任务。
	 * @param parmas
	 * @return
	 */
	ReturnMsg cancelDownload(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title BulkJobService 
	 * 使用此服务可以将对您的大批量请求安排为异步批量请求，
	 * 并可以获取您近期所执行请求的状态、结果等信息。
	 * @Description 获取从指定时间到当前时间段内有变化的物料id。各层级除计划层级返回的数据限制不超过两万条。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getChangedItemId(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title BulkJobService 
	 * 使用此服务可以将对您的大批量请求安排为异步批量请求，
	 * 并可以获取您近期所执行请求的状态、结果等信息。
	 * @Description 获取完整账户下，或者指定计划ID下的变化物料规模，从而帮助用户决定后续的最近更新策略。当有变化的物料规模大于一定比例时，用户不妨选择整账户下载。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getChangedScale(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	

	
	/**
	 * @Title ToolKitService 
	 * 历史操作记录查询。
	 * @Description 请求账户，计划，单元，关键词等层级的历史操作记录，请求时提供所查询条件，返回本次请求数据
					如果是新增操作，操作前值为“-”，同理，如果是删除操作，操作后值为“-“；
					从属service: ToolkitService
	 * @param parmas
	 * @return
	 */
	ReturnMsg getOperationRecord(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title KRService 
	 * 关键词规划师。
	 * @Description 账户主动推词接口：根据用户的账户和业务内容，返回对应的为用户量身定制的推荐词。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getKRCustom(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	/**
	 * @Title KRService 
	 * 关键词规划师。
	 * @Description 根据输入的种子词或url返回推荐的扩展词，一次调用仅允许请求1个种子词或一个url。。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getKRByQuery(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	/**
	 * @Title KRService 
	 * 关键词规划师。
	 * @Description 关键词预估接口。根据出价获取关键词预估结果。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getEstimatedDataByBid(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	/**
	 * @Title KRService 
	 * 关键词规划师。
	 * @Description 关键词预估接口。随机出价获取关键词预估结果。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getEstimatedData(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	/**
	 * @Title KRService 
	 * 关键词规划师。
	 * @Description 异步接口，根据输入的种子词返回推荐的扩展词，一次调用允许请求100个种子词。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getKRFileIdByWords(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title KRService 
	 * 关键词规划师。
	 * @Description 在调用getKRFileIdByWords接口后使用，以查询请求的文件是否已生成。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getKRFileStatus(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title KRService 
	 * 关键词规划师。
	 * @Description  返回请求的文件下载地址。使用接口：getKRFileIdByWords。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getKRFilePath(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	
	/**
	 * @Title SearchService  物料搜索。
	 * @Description  用户提供一个待搜索的关键词，搜索层级及搜索范围信息，服务端返回用户当前账户中的相关关键词的搜索结果。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getMaterialInfoBySearch(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	/**
	 * @Title SearchService  物料搜索。
	 * @Description  用户提供一个待搜索的id序列，服务端返回用户此id序列下对应状态的的单元/关键词数量，id数量不超过1000。
	 * @param parmas
	 * @return
	 */
	ReturnMsg getCountById(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	
	/**
	 * @Title SearchService  物料搜索。
	 * @Description  
	 * @param parmas
	 * @return
	 */
	ReturnMsg getTab(String opUsername, String opPassword, String tgUsername, String tgPassword,
			String tgSubname, String data) throws ApiException;
	
	/**
	 * 
	 * @Title: serverError
	 * @Description: 系统错误
	 * @param args
	 * @return ReturnMsg
	 */
	ReturnMsg serverError(Object args);
}
